package org.vs.test.contract;

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Bool;
import org.web3j.abi.datatypes.DynamicArray;
import org.web3j.abi.datatypes.DynamicStruct;
import org.web3j.abi.datatypes.Function;
import org.web3j.abi.datatypes.StaticStruct;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.Utf8String;
import org.web3j.abi.datatypes.generated.Bytes32;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.RemoteFunctionCall;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import org.web3j.tx.gas.ContractGasProvider;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 1.5.0.
 */
@SuppressWarnings("rawtypes")
public class __VoteContract03_sol_VoteContract03 extends Contract {
    public static final String BINARY = "608060405234801561001057600080fd5b50611a03806100206000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c80638c48497e1161008c578063c6e48ab011610066578063c6e48ab0146101b4578063cc2ee196146101c9578063db424dee146101de578063ff3c1a8f146101f3576100e9565b80638c48497e14610186578063acb21e1a14610199578063af1de66f146101a1576100e9565b806347515b8c116100c857806347515b8c14610136578063703d6d131461014957806372910be01461015e5780637b8b012214610171576100e9565b80623259ea146100ee578063198875191461010c57806325dff9d114610121575b600080fd5b6100f6610208565b604051610103919061177d565b60405180910390f35b61011f61011a3660046111f1565b610394565b005b6101296104bd565b60405161010391906116d9565b61011f6101443660046112f9565b6106fd565b6101516107e9565b60405161010391906117bd565b61011f61016c366004611434565b6108c5565b6101796108dc565b60405161010391906118a9565b61011f6101943660046113ff565b6108e2565b610151610a58565b61011f6101af36600461146f565b610ac8565b6101bc610b31565b60405161010391906115b9565b6101d1610c3b565b6040516101039190611630565b6101e6610ecd565b60405161010391906117fd565b6101fb610ee9565b6040516101039190611808565b6060600060085467ffffffffffffffff81111561023557634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561026e57816020015b61025b611041565b8152602001906001900390816102535790505b50905060005b6008548110156102e0576040805180820182526000838152600760209081529281205482529181019190915282518390839081106102c257634e487b7160e01b600052603260045260246000fd5b602002602001018190525080806102d890611986565b915050610274565b5060005b600b5481101561038e576000818152600a6020526040902080546001909101548351849190811061032557634e487b7160e01b600052603260045260246000fd5b60200260200101516020015161033b9190611900565b6000828152600a60205260409020600101548351849190811061036e57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015101528061038681611986565b9150506102e4565b50905090565b600654156103bd5760405162461bcd60e51b81526004016103b490611873565b60405180910390fd5b60005b81518110156104b65760008282815181106103eb57634e487b7160e01b600052603260045260246000fd5b60200260200101519050424484848151811061041757634e487b7160e01b600052603260045260246000fd5b60200260200101516020015160405160200161043593929190611591565b60408051808303601f1901815291815281516020928301206060840190815260008581526005845282902084518155928401516001840180546001600160a01b0319166001600160a01b03909216919091179055908301516002830155516003820155608090910151600490910155806104ae81611986565b9150506103c0565b5051600655565b60408051600180825281830190925260609160009190816020015b6104e061105b565b8152602001906001900390816104d857905050905060006040518060a00160405290816000820180546105129061192f565b80601f016020809104026020016040519081016040528092919081815260200182805461053e9061192f565b801561058b5780601f106105605761010080835404028352916020019161058b565b820191906000526020600020905b81548152906001019060200180831161056e57829003601f168201915b505050505081526020016001820180546105a49061192f565b80601f01602080910402602001604051908101604052809291908181526020018280546105d09061192f565b801561061d5780601f106105f25761010080835404028352916020019161061d565b820191906000526020600020905b81548152906001019060200180831161060057829003601f168201915b505050505081526020016002820180546106369061192f565b80601f01602080910402602001604051908101604052809291908181526020018280546106629061192f565b80156106af5780601f10610684576101008083540402835291602001916106af565b820191906000526020600020905b81548152906001019060200180831161069257829003601f168201915b5050505050815260200160038201548152602001600482015481525050816000815181106106ed57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152905090565b6008541561071d5760405162461bcd60e51b81526004016103b490611858565b60005b81518161ffff1610156107e2576000828261ffff168151811061075357634e487b7160e01b600052603260045260246000fd5b60209081029190910181015161ffff8416600090815260078352604090208151815581830151805192945084939192610792926001850192019061108a565b50604082015180516107ae91600284019160209091019061108a565b50606082015180516107ca91600384019160209091019061108a565b509050505080806107da90611964565b915050610720565b5051600855565b60606000600b5467ffffffffffffffff81111561081657634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561084f57816020015b61083c611041565b8152602001906001900390816108345790505b50905060005b600b5481101561038e576000818152600a6020908152604091829020825180840190935280548352600101549082015282518390839081106108a757634e487b7160e01b600052603260045260246000fd5b602002602001018190525080806108bd90611986565b915050610855565b80516108d890600090602084019061108a565b5050565b60085490565b6108ea610ecd565b6109065760405162461bcd60e51b81526004016103b49061188e565b61090f82610f7d565b61092b5760405162461bcd60e51b81526004016103b49061183d565b61093481611002565b6109505760405162461bcd60e51b81526004016103b490611822565b60008060005b6006548110156109cf576000818152600560205260409020600101546001600160a01b03163314156109bd57600081815260056020526040902060028101546004909101549093506109aa90600190611918565b6000828152600560205260409020600401555b806109c781611986565b915050610956565b5060005b600854811015610a0d5760008181526007602052604090205461ffff851614156109fb578091505b80610a0581611986565b9150506109d3565b506040805180820182528381526020808201848152600b80546000908152600a9093529390912082518155905160019182015591549091610a4e9190611900565b600b555050505050565b60408051600180825281830190925260609160009190816020015b610a7b611041565b815260200190600190039081610a735790505090506040518060400160405280600081526020016000815250816000815181106106ed57634e487b7160e01b600052603260045260246000fd5b805180518291600091610ae291839160209091019061108a565b506020828101518051610afb926001850192019061108a565b5060408201518051610b1791600284019160209091019061108a565b506060820151600382015560809091015160049091015550565b6060600060065467ffffffffffffffff811115610b5e57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610b9757816020015b610b8461110e565b815260200190600190039081610b7c5790505b50905060005b60065481101561038e57600081815260056020908152604091829020825160a0810184528154815260018201546001600160a01b0316928101929092526002810154928201929092526003820154606082015260049091015460808201528251839083908110610c1d57634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080610c3390611986565b915050610b9d565b6060600060085467ffffffffffffffff811115610c6857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610ca157816020015b610c8e611149565b815260200190600190039081610c865790505b50905060005b60085481101561038e576007600082815260200190815260200160002060405180608001604052908160008201548152602001600182018054610ce99061192f565b80601f0160208091040260200160405190810160405280929190818152602001828054610d159061192f565b8015610d625780601f10610d3757610100808354040283529160200191610d62565b820191906000526020600020905b815481529060010190602001808311610d4557829003601f168201915b50505050508152602001600282018054610d7b9061192f565b80601f0160208091040260200160405190810160405280929190818152602001828054610da79061192f565b8015610df45780601f10610dc957610100808354040283529160200191610df4565b820191906000526020600020905b815481529060010190602001808311610dd757829003601f168201915b50505050508152602001600382018054610e0d9061192f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e399061192f565b8015610e865780601f10610e5b57610100808354040283529160200191610e86565b820191906000526020600020905b815481529060010190602001808311610e6957829003601f168201915b505050505081525050828281518110610eaf57634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080610ec590611986565b915050610ca7565b6003546000904210801590610ee457506004544211155b905090565b6060600080018054610efa9061192f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f269061192f565b8015610f735780601f10610f4857610100808354040283529160200191610f73565b820191906000526020600020905b815481529060010190602001808311610f5657829003601f168201915b5050505050905090565b6000805b600654811015610ffc576000818152600560205260409020600101546001600160a01b031633148015610fc4575060008181526005602052604090206003015483145b8015610fe0575060008181526005602052604090206004015415155b15610fea57600191505b80610ff481611986565b915050610f81565b50919050565b6000805b600854811015610ffc5760008181526007602052604090205461ffff8416141561102f57600191505b8061103981611986565b915050611006565b604051806040016040528060008152602001600081525090565b6040518060a0016040528060608152602001606081526020016060815260200160008152602001600081525090565b8280546110969061192f565b90600052602060002090601f0160209004810192826110b857600085556110fe565b82601f106110d157805160ff19168380011785556110fe565b828001600101855582156110fe579182015b828111156110fe5782518255916020019190600101906110e3565b5061110a929150611171565b5090565b6040518060a001604052806000815260200160006001600160a01b031681526020016000815260200160008019168152602001600081525090565b6040518060800160405280600081526020016060815260200160608152602001606081525090565b5b8082111561110a5760008155600101611172565b600082601f830112611196578081fd5b813567ffffffffffffffff8111156111b0576111b06119b7565b6111c3601f8201601f19166020016118b2565b8181528460208386010111156111d7578283fd5b816020850160208301379081016020019190915292915050565b60006020808385031215611203578182fd5b823567ffffffffffffffff8082111561121a578384fd5b818501915085601f83011261122d578384fd5b813561124061123b826118dc565b6118b2565b8181528481019084860160a0808502870188018b101561125e578889fd5b8896505b848710156112ea5780828c031215611278578889fd5b604080518281018181108982111715611293576112936119b7565b825283358152898401356001600160a01b03811681146112b1578b8cfd5b818b0152838201359181019190915260608084013590820152608080840135908201528452600196909601959287019290810190611262565b50909998505050505050505050565b6000602080838503121561130b578182fd5b823567ffffffffffffffff80821115611322578384fd5b818501915085601f830112611335578384fd5b813561134361123b826118dc565b81815284810190848601875b848110156112ea5781358701608080601f19838f0301121561136f578a8bfd5b611378816118b2565b8a830135815260408301358981111561138f578c8dfd5b61139d8f8d83870101611186565b8c830152506060830135898111156113b3578c8dfd5b6113c18f8d83870101611186565b6040830152509082013590888211156113d8578b8cfd5b6113e68e8c84860101611186565b606082015286525050928701929087019060010161134f565b60008060408385031215611411578081fd5b82359150602083013561ffff81168114611429578182fd5b809150509250929050565b600060208284031215611445578081fd5b813567ffffffffffffffff81111561145b578182fd5b61146784828501611186565b949350505050565b600060208284031215611480578081fd5b813567ffffffffffffffff80821115611497578283fd5b9083019060a082860312156114aa578283fd5b6114b460a06118b2565b8235828111156114c2578485fd5b6114ce87828601611186565b8252506020830135828111156114e2578485fd5b6114ee87828601611186565b602083015250604083013582811115611505578485fd5b61151187828601611186565b604083015250606083013560608201526080830135608082015280935050505092915050565b60008151808452815b8181101561155c57602081850181015186830182015201611540565b8181111561156d5782602083870101525b50601f01601f19169290920160200192915050565b80518252602090810151910152565b928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b602080825282518282018190526000919060409081850190868401855b8281101561162357815180518552868101516001600160a01b0316878601528581015186860152606080820151908601526080908101519085015260a090930192908501906001016115d6565b5091979650505050505050565b60208082528251828201819052600091906040908185019080840286018301878501865b838110156116cb57603f19898403018552815160808151855288820151818a87015261168282870182611537565b915050878201518582038987015261169a8282611537565b915050606080830151925085820381870152506116b78183611537565b968901969450505090860190600101611654565b509098975050505050505050565b60208082528251828201819052600091906040908185019080840286018301878501865b838110156116cb57603f19898403018552815160a0815181865261172382870182611537565b915050888201518582038a87015261173b8282611537565b91505087820151858203898701526117538282611537565b606084810151908801526080938401519390960192909252505093860193908601906001016116fd565b602080825282518282018190526000919060409081850190868401855b82811015611623576117ad848351611582565b928401929085019060010161179a565b602080825282518282018190526000919060409081850190868401855b82811015611623576117ed848351611582565b92840192908501906001016117da565b901515815260200190565b60006020825261181b6020830184611537565b9392505050565b6020808252600190820152600d60fa1b604082015260600190565b6020808252600190820152603360f81b604082015260600190565b6020808252600190820152601960f91b604082015260600190565b6020808252600190820152603160f81b604082015260600190565b6020808252600190820152603560f81b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff811182821017156118d4576118d46119b7565b604052919050565b600067ffffffffffffffff8211156118f6576118f66119b7565b5060209081020190565b60008219821115611913576119136119a1565b500190565b60008282101561192a5761192a6119a1565b500390565b60028104600182168061194357607f821691505b60208210811415610ffc57634e487b7160e01b600052602260045260246000fd5b600061ffff8083168181141561197c5761197c6119a1565b6001019392505050565b600060001982141561199a5761199a6119a1565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220ece58151031f6bc41c675c41e1f89d73022e89616cf7502b24c392f29b021d8864736f6c63430008000033";

    public static final String FUNC_GETELECTORS = "getElectors";

    public static final String FUNC_GETOPTIONLENGTH = "getOptionLength";

    public static final String FUNC_GETOPTIONS = "getOptions";

    public static final String FUNC_GETTITLE = "getTitle";

    public static final String FUNC_GETVOTEINFO = "getVoteInfo";

    public static final String FUNC_GETVOTEDS = "getVoteds";

    public static final String FUNC_SETELECTOR = "setElector";

    public static final String FUNC_SETOPTIONS = "setOptions";

    public static final String FUNC_SETTITLE = "setTitle";

    public static final String FUNC_SETVOTEINFO = "setVoteInfo";

    public static final String FUNC_TESTGETVOTED = "testGetVoted";

    public static final String FUNC_VERIFYLEGALTIME = "verifyLegalTime";

    public static final String FUNC_VOTE = "vote";

    public static final String FUNC_VOTERESULT = "voteResult";

    @Deprecated
    protected __VoteContract03_sol_VoteContract03(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected __VoteContract03_sol_VoteContract03(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, credentials, contractGasProvider);
    }

    @Deprecated
    protected __VoteContract03_sol_VoteContract03(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected __VoteContract03_sol_VoteContract03(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public RemoteFunctionCall<List> getElectors() {
        final Function function = new Function(FUNC_GETELECTORS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Elector>>() {}));
        return new RemoteFunctionCall<List>(function,
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteFunctionCall<BigInteger> getOptionLength() {
        final Function function = new Function(FUNC_GETOPTIONLENGTH, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteFunctionCall<List> getOptions() {
        final Function function = new Function(FUNC_GETOPTIONS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Option>>() {}));
        return new RemoteFunctionCall<List>(function,
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteFunctionCall<String> getTitle() {
        final Function function = new Function(FUNC_GETTITLE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteFunctionCall<List> getVoteInfo() {
        final Function function = new Function(FUNC_GETVOTEINFO, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<VoteInfo>>() {}));
        return new RemoteFunctionCall<List>(function,
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteFunctionCall<List> getVoteds() {
        final Function function = new Function(FUNC_GETVOTEDS, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Voted>>() {}));
        return new RemoteFunctionCall<List>(function,
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteFunctionCall<TransactionReceipt> setElector(List<Elector> _electors) {
        final Function function = new Function(
                FUNC_SETELECTOR, 
                Arrays.<Type>asList(new DynamicArray<Elector>(Elector.class, _electors)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setOptions(List<Option> _options) {
        final Function function = new Function(
                FUNC_SETOPTIONS, 
                Arrays.<Type>asList(new DynamicArray<Option>(Option.class, _options)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setTitle(String _title) {
        final Function function = new Function(
                FUNC_SETTITLE, 
                Arrays.<Type>asList(new Utf8String(_title)),
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> setVoteInfo(VoteInfo _voteInfo) {
        final Function function = new Function(
                FUNC_SETVOTEINFO, 
                Arrays.<Type>asList(_voteInfo), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<List> testGetVoted() {
        final Function function = new Function(FUNC_TESTGETVOTED, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Voted>>() {}));
        return new RemoteFunctionCall<List>(function,
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteFunctionCall<Boolean> verifyLegalTime() {
        final Function function = new Function(FUNC_VERIFYLEGALTIME, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Bool>() {}));
        return executeRemoteCallSingleValueReturn(function, Boolean.class);
    }

    public RemoteFunctionCall<TransactionReceipt> vote(byte[] hashcode, BigInteger optionId) {
        final Function function = new Function(
                FUNC_VOTE, 
                Arrays.<Type>asList(new Bytes32(hashcode),
                new org.web3j.abi.datatypes.generated.Uint16(optionId)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<List> voteResult() {
        final Function function = new Function(FUNC_VOTERESULT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<VoteResultVo>>() {}));
        return new RemoteFunctionCall<List>(function,
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result = (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    @Deprecated
    public static __VoteContract03_sol_VoteContract03 load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new __VoteContract03_sol_VoteContract03(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    @Deprecated
    public static __VoteContract03_sol_VoteContract03 load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new __VoteContract03_sol_VoteContract03(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static __VoteContract03_sol_VoteContract03 load(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return new __VoteContract03_sol_VoteContract03(contractAddress, web3j, credentials, contractGasProvider);
    }

    public static __VoteContract03_sol_VoteContract03 load(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return new __VoteContract03_sol_VoteContract03(contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static RemoteCall<__VoteContract03_sol_VoteContract03> deploy(Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(__VoteContract03_sol_VoteContract03.class, web3j, credentials, contractGasProvider, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<__VoteContract03_sol_VoteContract03> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(__VoteContract03_sol_VoteContract03.class, web3j, credentials, gasPrice, gasLimit, BINARY, "");
    }

    public static RemoteCall<__VoteContract03_sol_VoteContract03> deploy(Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(__VoteContract03_sol_VoteContract03.class, web3j, transactionManager, contractGasProvider, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<__VoteContract03_sol_VoteContract03> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(__VoteContract03_sol_VoteContract03.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
    }

    public static class Elector extends StaticStruct {
        public BigInteger id;

        public String elector;

        public BigInteger weight;

        public byte[] hashcode;

        public BigInteger votes;

        public Elector(BigInteger id, String elector, BigInteger weight, byte[] hashcode, BigInteger votes) {
            super(new Uint256(id),
                    new Address(160, elector),
                    new Uint256(weight),
                    new Bytes32(hashcode),
                    new Uint256(votes));
            this.id = id;
            this.elector = elector;
            this.weight = weight;
            this.hashcode = hashcode;
            this.votes = votes;
        }

        public Elector(Uint256 id, Address elector, Uint256 weight, Bytes32 hashcode, Uint256 votes) {
            super(id, elector, weight, hashcode, votes);
            this.id = id.getValue();
            this.elector = elector.getValue();
            this.weight = weight.getValue();
            this.hashcode = hashcode.getValue();
            this.votes = votes.getValue();
        }
    }

    public static class Option extends DynamicStruct {
        public BigInteger id;

        public String name;

        public String image;

        public String describe;

        public Option(BigInteger id, String name, String image, String describe) {
            super(new Uint256(id),
                    new Utf8String(name),
                    new Utf8String(image),
                    new Utf8String(describe));
            this.id = id;
            this.name = name;
            this.image = image;
            this.describe = describe;
        }

        public Option(Uint256 id, Utf8String name, Utf8String image, Utf8String describe) {
            super(id, name, image, describe);
            this.id = id.getValue();
            this.name = name.getValue();
            this.image = image.getValue();
            this.describe = describe.getValue();
        }
    }

    public static class VoteInfo extends DynamicStruct {
        public String title;

        public String image;

        public String describe;

        public BigInteger startTime;

        public BigInteger endTime;

        public VoteInfo(String title, String image, String describe, BigInteger startTime, BigInteger endTime) {
            super(new Utf8String(title),
                    new Utf8String(image),
                    new Utf8String(describe),
                    new Uint256(startTime),
                    new Uint256(endTime));
            this.title = title;
            this.image = image;
            this.describe = describe;
            this.startTime = startTime;
            this.endTime = endTime;
        }

        public VoteInfo(Utf8String title, Utf8String image, Utf8String describe, Uint256 startTime, Uint256 endTime) {
            super(title, image, describe, startTime, endTime);
            this.title = title.getValue();
            this.image = image.getValue();
            this.describe = describe.getValue();
            this.startTime = startTime.getValue();
            this.endTime = endTime.getValue();
        }
    }

    public static class Voted extends StaticStruct {
        public BigInteger weight;

        public BigInteger optionId;

        public Voted(BigInteger weight, BigInteger optionId) {
            super(new Uint256(weight),
                    new Uint256(optionId));
            this.weight = weight;
            this.optionId = optionId;
        }

        public Voted(Uint256 weight, Uint256 optionId) {
            super(weight, optionId);
            this.weight = weight.getValue();
            this.optionId = optionId.getValue();
        }
    }

    public static class VoteResultVo extends StaticStruct {
        public BigInteger id;

        public BigInteger votes;

        public VoteResultVo(BigInteger id, BigInteger votes) {
            super(new Uint256(id),
                    new Uint256(votes));
            this.id = id;
            this.votes = votes;
        }

        public VoteResultVo(Uint256 id, Uint256 votes) {
            super(id, votes);
            this.id = id.getValue();
            this.votes = votes.getValue();
        }
    }
}
